#!perl
package MyTester::SleepyTest;
use Moose;
use MooseX::Method::Signatures;
use MooseX::StrictConstructor;
extends qw(MyTester::SimpleTest);

################################################################################
# Imports
################################################################################
use Carp;
use TryCatch;

use MyTester::TestStatus;
use MyTester::Roles::Testable;
################################################################################
# Constants
################################################################################


################################################################################
# Attributes
################################################################################

has 'interval' => (
   isa => 'Int',
   is => 'rw',
   default => 2,
   trigger => sub {
      my ($self, $val) = @_;
      
      if ($val < 1) {
         croak "Must sleep for a positive interval";
      }
   }
);

################################################################################
# Methods
################################################################################

method test {
   sleep $self->interval();
}

method afterTest {
   if (!$self->fail()) {
      $self->testStatus($MyTester::TestStatus::PASSED);
   }
}

################################################################################
# Roles (put here to compile properly w/ Moose)
################################################################################

with qw(MyTester::Roles::Testable);

1;